simplified logic of code to speed it up.
authorØyvind Kolås <ok@src.gnome.org>
Thu, 15 Feb 2007 16:37:41 +0000 (16:37 +0000)
committerØyvind Kolås <ok@src.gnome.org>
Thu, 15 Feb 2007 16:37:41 +0000 (16:37 +0000)
* extensions/gegl-fixups.c: (conv_rgbAF_rgb8): simplified logic
of code to speed it up.

svn path=/trunk/; revision=217

ChangeLog
extensions/gegl-fixups.c

index ee5aa21d5ff0e227db59817029bbde4ac94e6ddb..508693dd44c85c671e56c1113947786638987cec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-15  Øyvind Kolås  <pippin@gimp.org>
+
+       * extensions/gegl-fixups.c: (conv_rgbAF_rgb8): simplified logic
+       of code to speed it up.
+
 2007-02-15  Øyvind Kolås  <pippin@gimp.org>
 
        * babl/base/model-rgb.c: (premultiplied_to_non_premultiplied),
index 3b60ba264c64fbc714e88c3c4b48b4d3dfbfde3a..91afb9cbe3daf3a65d8e5b6fa85d58b0d6b7e0a3 100644 (file)
@@ -415,26 +415,19 @@ conv_rgbAF_rgb8 (unsigned char *srcc,
   long n=samples;
   while (n--)
     {
-      int i;
       float alpha = src[3];
-      if (alpha < 0.0001)
-        alpha = 0.0001;
-      for (i=0;i<3;i++)
+      if (alpha < 0.00001)
         {
-          float ca=src[i];
-          float c;
-          int ret;
-          c=ca/alpha;
-          if (alpha==0.0)
-            ret=0;
-          else
-            ret = table_F_8g[gggl_float_to_index16 (c)];
-          if (ret<=0)
-            dst[i]=0;
-          else if (ret>255)
-            dst[i]=255;
-          else
-            dst[i] = ret;
+          dst[0]=0;
+          dst[1]=0;
+          dst[2]=0;
+        }
+      else
+        {
+          float alpha_recip = 1.0/alpha;
+          dst[0] = table_F_8g[gggl_float_to_index16 (src[0]*alpha_recip)];
+          dst[1] = table_F_8g[gggl_float_to_index16 (src[1]*alpha_recip)];
+          dst[2] = table_F_8g[gggl_float_to_index16 (src[2]*alpha_recip)];
         }
       src += 4;
       dst += 3;